package servlets;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import util.DBUtil;

import business.Produto;

import dao.ProdutoDao;

public class ServletProduto extends HttpServlet implements Servlet{

	ProdutoDao produtodao = new ProdutoDao();
	private static final Logger log = Logger.getLogger( ServletProduto.class );
	
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) 
	throws ServletException, IOException 
	{
		doPost(request,response);
	}

	protected void doPost(HttpServletRequest request, 
			HttpServletResponse response) 
	throws ServletException, IOException{
		
		String comando = request.getParameter("comando");
		log.debug( "comando: " + comando );
		
		if (comando==null){
			response.sendRedirect("produtos.jsp");
		}
		else if ("inserir".equals( comando )){
			String codProd = request.getParameter("codProd");
			String desc = request.getParameter("desc");
			String qtdMin = request.getParameter("qtdMin");
			String qtdTotal = request.getParameter("qtdTot");
			String valorVenda = request.getParameter("valVenda");
			
			Produto p1 = new Produto ();
			
			try {
				p1.setCodProd(Integer.parseInt(codProd));
								
			} catch (NumberFormatException e) {
				log.error("Number Format Exception", e);
				p1.setCodProd(0);
			}
			
			p1.setDescricao(desc);
			
			try {
				p1.setQtdMinima(Integer.parseInt(qtdMin));
			} catch (NumberFormatException e) {
				log.error("Number Format Exception", e);
			}
			
			try {
				p1.setQtdTotal(Integer.parseInt(qtdTotal));
			} catch (NumberFormatException e) {
				log.error("Number Format Exception", e);
			}
			try {
				p1.setValorVenda(Double.parseDouble(valorVenda));
			} catch (NumberFormatException e) {
				log.error("Number Format Exception", e);
			}
			
			produtodao.adicionarProduto(p1);
			response.sendRedirect("produtoInserir.jsp?ProdutoInseridoComSucesso");
			response.flushBuffer();
		}
		else if ("remover".equals(comando))
		{
			String codProd = request.getParameter("codProd");
			log.debug(codProd);
			int cProd;
			try {
				cProd = Integer.parseInt(codProd);
			} catch (NumberFormatException e) {
				log.error("Number Format Exception", e);
				cProd = 0;
			}
			
			produtodao.removerProduto(cProd);
			
			response.sendRedirect("produtoRemover.jsp?mensagem=produto Removido com Sucesso!");			
		}
		else if (comando.equals("listar"))
		{
			ArrayList funcionarios = produtodao.listarProdutos();
			
			request.setAttribute("lista_funcionarios",funcionarios);
			
			RequestDispatcher rd = request.getRequestDispatcher("funcionarioListar.jsp");
			rd.forward(request,response);			
		}		
		else if (comando.equals("consultar"))
		{
			String codProduto = request.getParameter("codProduto");

			Produto produto = produtodao.leProduto(Integer.parseInt(codProduto));
			
			request.setAttribute("altera_produto",produto);
			
			RequestDispatcher rd = request.getRequestDispatcher("produtoAlterar.jsp");
			rd.forward(request,response);			
		}
	}
}
